/**
 *
 * @file
 * @author filipe
 *
 * @section DESCRIPTION
 *
 * This file contains the weightless vg-ram neuron class
 */

#ifndef NEURON_VGRAM_H_
#define NEURON_VGRAM_H_

#include <vector>
#include "neuron.h"

using namespace std;

namespace nn_lib
{
	namespace neuron
	{
		template<class OutputClass>
		class NeuronVGRAM : Neuron<int, OutputClass>
		{
			vector<pair<vector<int>, OutputClass> > neuron_memory;

			double
			calculate_hamming_distance(vector<int> a, vector<int> b);

			public:

				NeuronVGRAM();
				~NeuronVGRAM();

				void train(vector<int> input_vector, OutputClass expected_output);
				OutputClass	test(vector<int> input_vector);
		};
	}
}

#endif /* NEURON_VGRAM_H_ */
